import java.io.File;
import java.util.Scanner;

public class Demo13 {
    public static void main(String[] args) {
        // 1. 输入你要扫描的路径
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要扫描的路径: ");
        String path = scanner.next();
        // 判定输入的路径是否合法
        File rootPath = new File(path);
        if(!rootPath.isDirectory()){
            // 如果它不是一个目录
            System.out.println("您当前输入的扫描路径有误");
            return;
        }

        // 2. 让用户输入要查询的关键词
        System.out.println("请输入要删除文件的关键词: ");
        String word = scanner.next();

        // 3. 可以进行递归的扫描了,以刚才的路径为起点进行扫描
        // 通过这个方法进行递归
        scanDir(rootPath,word);
    }

    private static void scanDir(File rootPath, String word) {
        // 1.先列出rootPath中所有的文件和目录
       File[] files = rootPath.listFiles();
       if(files == null){
           // 如果当前目录是空目录就直接return
           return;
       }
       // 2. 遍历这里的所有元素,不同的类型做出不同的处理
        for(File f : files){
            // 加个日志,方便观察当前递归的执行过程
            System.out.println("当前扫描的文件 :" + f.getAbsolutePath());
            if(f.isFile()){
                // 普通文件 检查文件是否要删除,并执行删除操作
                checkDelete(f,word);
            }else{
                // 目录 递归再去子目录中判定包含的内容
                scanDir(f,word);
            }
        }
    }

    private static void checkDelete(File f, String word) {
        if(!f.getName().contains(word)){
            // 不必删除,直接结束方法
            return;
        }else{
            // 需要删除
            System.out.println("当前文件为:" + f.getAbsolutePath() + ",请确定是否要删除(Y/n):");
            Scanner scanner = new Scanner(System.in);
            String choice = scanner.next();
            if(choice.equals("Y") || choice.equals("y")){
                // 真正删除文件
                f.delete();
                System.out.println("删除完毕!");
            }else{
                // 如果是其他操作,不一定要是 n,都会取消删除
                System.out.println("取消删除!");
            }
        }
    }
}
